using IQIGame.Onigao.Framework;
using System.Collections.Generic;

namespace IQIGame.Onigao.GamePlay
{
    [SerializableGroup(SerializableGroup.MainCityModuleConfig)]
    public partial class MainCityEntityConfig
    {
        public int id;
        /// <summary>
        /// 主城npc表(MainCityNpc.csv)id
        /// </summary>
        public int npcCid;
        /// <summary>
        /// 是否激活（未激活类似SetActive(false)，将不与任何其他实体交互）
        /// </summary>
        public bool isActive;
        /// <summary>
        /// 是否激活阻挡
        /// </summary>
        public bool isObstacleActive;
        /// <summary>
        /// 位置（厘米）
        /// </summary>
        public Vector3Int position;
        /// <summary>
        /// 初始旋转信息（欧拉角）
        /// </summary>
        public Vector3Int initDirEuler;
        /// <summary>
        /// 实体当前可交互类型（无，可攻击，可对话等，仅用于控制视图层相关信息显示，实际交互逻辑按照策划配置的服务进行）
        /// </summary>
        public byte interactType;
        /// <summary>
        /// 阻挡信息
        /// </summary>
        public ObstacleInfo obstacle;
        /// <summary>
        /// 行为树资源名（相对路径）
        /// </summary>
        public string behaviourName;
        /// <summary>
        /// 状态机资源名（相对路径）
        /// </summary>
        public string stateMachineName;
        /// <summary>
        /// 行为脚本资源名（相对路径）
        /// </summary>
        public string behavScriptName;
        /// <summary>
        /// NPC视野可视距离
        /// </summary>
        public int viewRange;
        /// <summary>
        /// NPC视野可视角度
        /// </summary>
        public int viewAngle;
        /// <summary>
        /// 动态参数，用于存储各种扩展实体信息（大多是特殊实体的信息，比如电梯信息，怪物巡逻信息等）
        /// </summary>
        public IReadOnlyDictionary<MainCityEntityDynParamType, BaseMainCityEntityDynParam> paramMap;
        /// <summary>
        /// 地图实体表id，用于地图UI显示
        /// </summary>
        public int mapUIEntityCid;
    }
}
